const express = require('express')
const router = express.Router()

const authController = require('./auth.controller')
const userController = require('./user.controller')
const roleController = require('./RoleController')
const AuthMiddleware = require('./auth.middleware')
const menuController = require('./menu.controller')
const apiController = require('./api.controller')
/**********************************
 * 认证相关 start
 **********************************/
// 登录
router.post('/auth/login', AuthMiddleware.isAnonymous, authController.login)
// 登出
router.post('/auth/logout', AuthMiddleware.authorization, authController.logout)

// 获取个人信息
router.get('/auth/info', AuthMiddleware.authorization, authController.info)
// 获取该用户的路由信息(前端展示为菜单)
router.post(
  '/auth/routes',
  AuthMiddleware.isAnonymous,
  AuthMiddleware.authorization,
  AuthMiddleware.authentication,
  authController.routes
)

// 获取该用户的按钮权限
router.post(
  '/auth/btns',
  // AuthMiddleware.isAnonymous,
  AuthMiddleware.authorization,
  authController.btns
)

// 注销
router.post(
  '/logout',
  authController.logout
)
/**********************************
 * 认证相关 END
 **********************************/

/**********************************
 * 用户相关 START
 **********************************/
// 获取用户列表
router.get('/user/list', userController.list)
router.post('/user/create', userController.create)
router.post('/user/update/:id', userController.updateUser)
router.post('/user/remove/:id', userController.realRemove)

/**********************************
 * 用户相关 END
 **********************************/

/**********************************
 * 角色相关 START
 **********************************/
// 角色列表
router.get('/roles', roleController.all)

// 角色更新
router.post('/role/update/:id', roleController.update)

// 角色删除
router.post('/role/delete/:id', roleController.remove)

// 角色创建
router.post('/role/create', roleController.create)

// 为角色分配菜单权限
router.post('/role/assign/menuPerms', roleController.assignMenuPerms)

// 为角色分配api权限
router.post('/role/assign/apiPerms', roleController.assignApiPerms)
/**********************************
 * 角色相关 END
 **********************************/

/**********************************
 * 菜单相关 START
 **********************************/
// 菜单列表
router.get('/menu/list', menuController.list)

// 菜单创建
router.post('/menu/create', menuController.create)

// 按钮创建
router.post('/button/create', menuController.createButton)

// 获取菜单树状结构
router.get('/menu/tree/noBtn', menuController.getMenuTreeNotIncludeBtn)
router.get('/menu/tree/btn', menuController.getMenuTreeIncludeBtn)

router.post('/menu/update', menuController.updateMenu)

router.post('/menu/remove/:id', menuController.remove)

/**********************************
 * 菜单相关 END
 **********************************/

/**********************************
 * 后端Api相关 START
 **********************************/
// 菜单列表
router.get('/api/list', apiController.list)

// 菜单树
router.get('/api/tree', apiController.tree)

// 创建
router.post('/api/create', apiController.create)

// 删除
router.post('/api/remove/:id', apiController.realRemove)

// 更新
router.post('/api/update/:id', apiController.update)
/**********************************
 * 后端Api相关 END
 **********************************/

router.get('/test', AuthMiddleware.isAnonymous,
  AuthMiddleware.authorization,
  AuthMiddleware.authentication,
  (req, res) => {
    console.log('是否为匿名访问:', req.isAnonymous)
    console.log('请求方式: ', req.method)
    console.log('需要的角色: ', req.roles)
    res.json({
      data: 'test'
    })
  })
module.exports = router
